import { defineConfig, loadEnv } from "vite";
import vue from "@vitejs/plugin-vue";
import WindiCSS from "vite-plugin-windicss"; // 引用 windicss
import { join } from "path";
function resolve(dir) {
    return join(__dirname, dir);
}
// https://vitejs.dev/config/
export default defineConfig((env) => {
    // env 环境变量
    const viteEnv = loadEnv(env.mode, `.env.${env.mode}`);

    return {
        plugins: [vue(), WindiCSS()],
        resolve: {
            //  别名
            alias: {
                "@": resolve("./src"),
            },
        },
        server: {
            host: true, // host设置为true才可以使用network的形式，以ip访问项目
            open: true, // 自动打开浏览器
            cors: true, // 跨域设置允许
            strictPort: true, // 如果端口已占用直接退出
            // 接口代理
            proxy: {
                "/apis/": {
                    // 本地 3000 前端代码的接口 代理到 8888 的服务端口
                    target: "http://localhost:5000",
                    changeOrigin: true, // 允许跨域
                    rewrite: (path) => path.replace(/^\/apis/, ""),
                },
            },
        },
        build: {
            brotliSize: false,
            // 消除打包大小超过500kb警告
            chunkSizeWarningLimit: 2000,
            // 在生产环境移除console.log
            terserOptions: {
                compress: {
                    drop_console: true,
                    drop_debugger: true,
                },
            },
            assetsDir: "static/assets",
            // 静态资源打包到dist下的不同目录
            rollupOptions: {
                output: {
                    chunkFileNames: "static/js/[name]-[hash].js",
                    entryFileNames: "static/js/[name]-[hash].js",
                    assetFileNames: "static/[ext]/[name]-[hash].[ext]",
                },
            },
        },
        css: {
            preprocessorOptions: {
                // 全局引入了 scss 的文件
                scss: {
                    additionalData: `
          @import "@/styles/variables.scss";
        `,
                    javascriptEnabled: true,
                },
            },
        },
    };
});
